package org.dxy.domain.event.workstation;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Value;
import org.dxy.domain.event.AggregateTypeEnum;
import org.dxy.domain.event.DomainEvent;

import java.time.LocalDateTime;

/**
 * 事件：工位被暂停
 * 用于表示某个工位因异常或人为操作而进入暂停状态。
 */
@Value
@Builder
@AllArgsConstructor
public class WorkstationPausedEvent implements DomainEvent {

    /**
     * 工位 ID
     */
    Long workstationId;

    /**
     * 暂停原因（可选，如：人为暂停、设备异常等）
     */
    String reason;

    /**
     * 触发暂停的操作人（可选）
     */
    String operator;

    /**
     * 暂停时间
     */
    LocalDateTime pausedAt;
    
    @Override
    public Long aggregateId() {
        return workstationId;
    }
    
    @Override
    public String aggregateType() {
        return AggregateTypeEnum.WORKSTATION.getKey();
    }
    
    @Override
    public String eventType() {
        return WorkstationEventTypeEnum.PAUSED.getKey();
    }
}

